package com.shenda.device;

import com.shenda.device.message.ReqMsg;
import com.shenda.device.message.ReqMsg_Config;
import com.shenda.device.message.ReqMsg_Flush;
import com.shenda.device.message.ReqMsg_GetMac;
import com.shenda.device.message.ReqMsg_GetPin;
import com.shenda.device.message.ReqMsg_GetStatus;
import com.shenda.device.message.ReqMsg_Reboot;
import com.shenda.device.message.ReqMsg_StartCollection;
import com.shenda.device.message.ReqMsg_StartUpload;
import com.shenda.device.message.ReqMsg_StopCollection;
import com.shenda.device.message.ReqMsg_StopUpload;

/**
 * 设备操作
 * 
 * @author lifeng
 */
@SuppressWarnings("deprecation")
public interface Options {

	/**
	 * 刷新设备 -- 设备关闭并重连
	 */
	void connect();

	/**
	 * 关闭设备
	 */
	void close();

	/**
	 * 开始收集
	 */
	default void startCollection() {
		this.sendCommand(ReqMsg_StartCollection.of());
	}

	/**
	 * 结束收集
	 */
	default void stopCollection() {
		this.sendCommand(ReqMsg_StopCollection.of());
	}

	/**
	 * 开始上传
	 */
	default void startUpload() {
		this.sendCommand(ReqMsg_StartUpload.of());
	}

	/**
	 * 结束上传
	 */
	default void stopUpload() {
		this.sendCommand(ReqMsg_StopUpload.of());
	}

	/**
	 * 配置
	 */
	default void deviceConfig(String cjms, String cjpl, String odr) {
		this.sendCommand(ReqMsg_Config.of().setCjms(cjms).setCjpl(cjpl).setOdr(odr).as());
	}

	/**
	 * 获得MAC
	 */
	default void deviceMac() {
		this.sendCommand(ReqMsg_GetMac.of());
	}

	/**
	 * 获得PIN
	 */
	default void devicePin() {
		this.sendCommand(ReqMsg_GetPin.of());
	}

	/**
	 * 获得状态
	 */
	default void deviceStatus() {
		this.sendCommand(ReqMsg_GetStatus.of());
	}

	/**
	 * 获得状态
	 */
	default void flush() {
		this.sendCommand(ReqMsg_Flush.of());
	}

	/**
	 * 获得状态
	 */
	default void reboot() {
		this.sendCommand(ReqMsg_Reboot.of());
	}

	/**
	 * 发送命令
	 */
	void sendCommand(ReqMsg command);
}
